Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

142
Views
Estructuración adecuada de JS/TS: dibujo de lienzo de la clase, sin que la clase "sabe" sobre el lienzo

Tengo una clase principal, que tiene un <canvas> y una propiedad de tool .
(escrito en mecanografiado):

 class CanvasHandler { canvas: HTMLCanvasElement; tool: Tool; constructor(canvas: HTMLCanvasElement, tool: Tool) { this.canvas = canvas; this.tool = tool; } }

La tool será una instancia de la clase Pen , que extiende Tool :

 interface IPen { size: number; color: string; } class Pen extends Tool implements IPen { size: number; color: string; constructor(size: number, color: string) { super(ToolNames.PEN, ToolDescriptions.PEN); this.size = size; this.color = color; } override onMouseMove(event: Event) { // DRAW CIRCLE TO CANVAS } }

Implementé un Observer en el <canvas> -Element, por lo que ahora cada vez que el mouse se mueve sobre el lienzo, se ejecuta el método onMouseMove de CanvasHandler.tool . Ahora, cada vez que se llama a la función onMouseMove , quiero dibujar un círculo en <canvas> . Podría proporcionar una referencia al <canvas> , para que la clase Tool "conozca" el <canvas> , y 'onMouseMove' podría anular el comportamiento de dibujo en Pen . Sin embargo, me pregunto, si no hay una mejor manera, de reubicar la funcionalidad de dibujo, de modo que la clase Pen y Tool no "sepan" directamente sobre el elemento <canvas> .

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!